package com.dys.testio07;

import java.io.*;
import java.util.Scanner;

/**
 * @className: src.main.java.com.dys.testio07.SystemTest
 * @description: src.main.java.com.dys.testio07
 * @author: pine cone
 * @version: v1.0.0
 * @createTime: 2024/08/16 下午9:57
 */
public class SystemTest {
    /**
     * 这是一个main()方法,是应用程序的入口
     *
     * @param args 方法的形参列表,是一个字符串数组,包含了从命令行传递给程序的参数
     */
    public static void main(String[] args) throws IOException {
        new SystemTest().testSystemOut();
    }

    /**
     * 标准输入字节流
     *
     * @throws IOException
     */
    public void testSystemIn() throws IOException {
        // 得到的是标准输入流,从键盘输入
        InputStream in = System.in;
        // 调用读取的方法，read()方法是等待键盘的录入，所以这个方法是一个阻塞方法
        int n = in.read();
        System.out.println(n);
    }

    /**
     * Scanner的作用：扫描器：起扫描作用的，扫键盘的从这根管出来的数据
     */
    public void testScanner() {
        // 以前案例：从键盘录入一个int类型的数据：
        // 从上面的代码证明，键盘录入实际上是：System.in
        // 形象的理解：System.in管，这根管怼到键盘上去了，所以你从键盘录入的话，就从这个管到程序中了
        Scanner sc = new Scanner(System.in);
        int i = sc.nextInt();
        System.out.println(i);
    }

    /**
     * 既然Scanner是扫描的作用,不一定非得扫System.in进来的文件，还可以扫描其它管的数据
     */
    public void testScannerOtherStream() throws FileNotFoundException {
        Scanner sc = new Scanner(new FileInputStream(new File("e:\\test.txt")));
        while (sc.hasNext()) {
            System.out.println(sc.next());
        }
    }

    /**
     * 扫描器
     */
    public void testScannerOtherStream2() {
        // 指定要读取的文本文件的路径
        String filePath = "path/to/your/textfile.txt";

        try {
            // 创建一个 Scanner 对象，用于读取文件
            Scanner scanner = new Scanner(new File(filePath));

            // 逐行读取文件内容
            while (scanner.hasNextLine()) {
                String line = scanner.nextLine(); // 读取一行内容
                System.out.println(line); // 打印该行内容
            }

            // 关闭 Scanner
            scanner.close();
        } catch (FileNotFoundException e) {
            System.err.println("文件未找到：" + e.getMessage());
        }
    }

    /**
     * 标准输出流
     *
     * @throws IOException
     */
    public void testSystemOut() throws IOException {
        // 写到控制台
        PrintStream out = System.out;
        // 调用方法,直接在控制台写出,但是不换行
        out.print("Hello World1");
        out.print("Hello World2");
        out.print("Hello World3");
        out.print("Hello World4");

        // 直接在控制台写出,并且执行换行
        out.println("奥运会1");
        out.println("奥运会2");
        out.println("奥运会3");
        out.println("奥运会4");

        System.out.println("中国队");
        System.out.print("加油");
    }
}
